Розробка моделі аналізу і об`єктно-орієнтованого компонента для гри Terrarium 20

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

МІНІСТЕРСТВО ОСВІТИ

Ухтинський державний технічний університет

Кафедра ІСТ

Курсовий проект

Дисципліна: «Інформаційні технології»

Тема:

«Розробка моделі аналізу і об'єктно-орієнтованого компонента для гри Terrarium 2.0»

Виконав

студент групи ІСТ-2-04

Звєрєв Ю.В.

Перевірив

доцент кафедри ІСТ, д. т. н.

Істомін М.А.

Ухта 2008

Зміст

Введення

Постановка завдання

Завдання на курсовий проект

Опис гри Terrarium

Подієва модель гри Terrarium 2.0

Розробка моделі поведінки тварини

Опис поведінки тварини

Збір та аналіз статистики тваринного

Висновок

Список літератури

Додаток

Лістинг

Введення

У рамках даного курсового проекту ставиться завдання розробки моделі аналізу та розробки об'єктно-орієнтованого компонента для гри Terrarium 2.0. Відповідно до завдання розроблений компонент повинен моделювати поведінку травоїдного тваринного. При цьому основним моментом є можливість збиратися у зграї з виділенням ватажка на основі досвіду.

Основною метою даного курсового проекту є розробка об'єктно-орієнтованої моделі тварини, яка пояснюється побудовою моделі гри Terrarium. Вона побудована на базі концепцій об'єктно-орієнтованого програмування.

Розробка даної моделі передбачає детальне опрацювання структури класів і зв'язків між ними. При цьому передбачається використання так званих шаблонів проектування, які найбільш повно відображають структуру розробляється моделі, а також забезпечують розподіл обов'язків між об'єктами.

Розробка компонента, що моделює поведінку тварини, проводиться з використанням технології. NET, що функціонує на базі платформи Microsoft. NET Framework версії 2.1, за допомогою середовища розробки Microsoft Visual Studio 2008 з використанням мови програмування C #.

Тестування розробленої моделі поведінки тварини виконується в системі Microsoft Terrarium версії 2.0, так як саме ця версія системи призначена для тестування компонентів, розроблених з використанням технології. NET, що функціонує на базі платформи Microsoft. NET Framework версії 2.1.

Постановка завдання

Завдання на курсовий проект

Розробити об'єктно-орієнтована компонент для гри Terrarium 2.0: «травоїдна» з низьким рівнем енергії, середнім рівнем камуфляжу, високим зором і середньої швидкості, а також з можливістю особин збиратися у зграї з виділенням ватажка на основі досвіду.

Рішення поставленої задачі виконати в наступних етапах:

  1. Вивчити документацію на гру, проаналізувати поведінку травоїдного істоти, що поставляється разом з грою, виділити його завдання (прецеденти) для виживання в екосистемі й успішні і неуспішні сценарії виконання цих завдань.

2. Реалізувати модуль з твариною на Visual C #

3. Зібрати статистику за підсумками життя тварини.

Істота певного виду в грі є динамічно завантажену бібліотеку (Dynamic Load Library - DLL), в якій визначена об'єктна модель, що описує основні властивості і поведінка тварини. Бібліотека працює на основі платформи. NET Framework. Для різних версій платформи існують різні версії гри: для платформи. NET Framework 1.0 - версія гри Terrarium 1.0, для платформи. NET Framework 1.1 - Terrarium 1.2, для платформи. NET Framework 2.0 - Terrarium 2.0. Для розробки істоти в рамках даного курсового проекту була використана версія платформи 2.1, тестуєма відповідно в грі Terrarium 2.0.

Об'єктна модель, що описує основні властивості та поведінку тварини, реалізується у вигляді одного або декількох класів за допомогою однієї з мов, що входять у комплект постачання платформи. NET Framework 2.1 і підтримують основні концепції об'єктно-орієнтованого підходу: Visual C #, Visual Basic.

Опис гри Terrarium

Terrarium - це розроблене фірмою Microsoft додаток, що являє собою оболонку для гри, опис якої наведено нижче. Ця оболонка розроблена для демонстрації можливостей середовища. NET. Сенс гри полягає в розробці системи управління травоїдним або м'ясоїдним істотою, а так само рослиною. Істоти і рослини заселяются (завантажуються) в екосистему, яка може бути побудована як на одному комп'ютері, так і на основі взаємодії великої кількості комп'ютерів.

Гра надає конкурентоспроможну середовище для випробування різних варіантів істот. Середовище є дуже реалістичної еволюційної моделлю штучного інтелекту, в якій можна оцінити роль різних рис поведінки і властивостей тварин в процесі боротьби за виживання.

Для того, щоб забезпечити рівновагу екосистеми, проектувальники оболонки Terrarium вибрали три різних типи живих істот:

- Рослини

- Травоїдні

- Хижаки (М'ясоїдні)

Рослини харчуються природним сонячним світлом тераріуму. Вони служать єдиним джерелом їжі для травоїдних.

Травоїдні - мало агресивні тварини, здатні до мирного спільного проживання поблизу рослин, які використовуються для харчування.

Хижаки - це тварини які знищують популяцію травоїдних і використовують їх при харчуванні.

Для того, щоб екосистема успішно існувала, всі тварини тераріуму повинні жити разом, інакше система стане втратить рівновагу, і в кінцевому рахунку істоти помруть від голоду.

Життєвий кругообіг - єдиний шлях від народження до смерті, але й на цьому шляху є багато моментів, які ведуть до появи цікавих можливостей для розробників тварин. З моменту народження тварини хочуть їсти, і вони повинні їсти, щоб жити і рости. З ростом у розмірі збільшується і їхній життєвий досвід, а також здатність боротися і захищати себе і свою територію.

Перемогло тварина отримає необхідну йому їжу або доступ до рослин. Без рослин або інших убитих тварин травоїдним і хижакам стає чого їсти, і в кінцевому рахунку, вони будуть голодувати. Навіть цілком здорові тварини все ж вразливі для хвороби і рано чи пізно вмирають. Якщо хвороба, голод і атаки інших особин не приведуть до загибелі істоти, то в кінцевому рахунку, вона помре від старості.

Таким чином, у грі максимально реально відображені умови існування цієї екосистеми.

Подієва модель гри Terrarium 2.0

Кожна дія істоти або його поведінка є безпосереднім результатом деякого події, викликаного середовищем Terrarium. За допомогою подій всі істоти сповіщаються про зміни в середовищі. Наприклад, подія Idle породжується в кінці кожного ходу. Подія дозволяє дізнатися, коли можна виконувати ті чи інші дії. Події викликають дії, які відбуваються у кожному раунді гри. До подій, які породжуються після виконання істотою певної дії, відносяться, наприклад, MoveCompleted, AttackCompleted і EatCompleted. Як правило, істота використовує тільки підмножина подій, що надаються середовищем Terrarium.

Деякі події, наприклад MoveCompletedEventHanlder, мають спеціальні параметри, які можуть застосовуватися для виконання більш складних дій. Ці спеціальні параметри істотні, так як вони надають інформацію про процес переміщення, про те, яка особина в даний час нападає на іншу, або, можливо, будь-яку спеціальну інформацію від батьківського організму, яка може бути корисною.

Так як істоти в грі повинні діяти на основі моделі поведінки, повністю керованої подіями, важливо, щоб кожна істота розуміло, в якому порядку виникають події, як можна обробити кілька подій за один хід, і як уникнути ситуацій, у яких менше важлива дія виконується замість більш важливого. Кожному суті повинні бути призначені ті події, на які воно буде реагувати

Події обробляються за допомогою методів класу, що описує властивості і поведінку істоти.

Розробка моделі поведінки тварини

Опис поведінки тварини

Збір та аналіз статистики тваринного

Висновок

У рамках даного курсового проекту було поставлено завдання розробки компонента для гри Microsoft Terrarium, який моделює поведінку тварини-травоїдного. При цьому основним моментом було можливість збиратися у зграї з виділенням ватажка на основі досвіду.

Після розробки було проведено тестування тварини. Під час тестування збиралася статистика по чисельності живих організмів на даний момент, кількості організмів, коли-небудь існували в екосистемі, кількістю вбитих організмів, кількості померлих від старості.

Список літератури

  1. The Terrarium Ecosystem Overview - матеріали сторінки http://www.windowsforms.net/Terrarium

  2. Фаулер М., Скотт К. UML. Основи. - Пер. з англ. - СПб: Символ-плюс, 2002. - 192 с., Іл.

  3. Марков С.М., Шалито А. А. Система управління травоїдним істотою для гри «Terrarium». С.П., 2003: Санкт-Петербурзький державний інститут точної механіки і оптики, кафедра «Комп'ютерні технології».

  4. Нейгель, Крістіан, Івьен, Білл, Глин, Джей, і ін C # для професіоналів. - М.: Видавничий дім «Вільямс», 2006 - 1376 с.

  5. Ларман, Крег. Застосування UML і шаблонів проектування. 2-е видання. - М.: Видавничий дім «Вільямс», 2004. - 624 с.

Додаток

Лістинг

using System;

using System.Collections;

using System.Drawing;

using System.IO;

using OrganismBase;

[Assembly: OrganismClass ("Exercise1.MyAnimal")]

[Assembly: AuthorInformation ("Юра", "YuG.Ermolaev @ vorkuta.ru")]

namespace Exercise1

{

[Carnivore (false)]

[MatureSize (28)]

[AnimalSkin (AnimalSkinFamily.Beetle)]

[MarkingColor (KnownColor.Yellow)]

[MaximumEnergyPoints (14)] / / Максимальне кількість енергії

[EatingSpeedPointsAttribute (0)] / / Швидкість їжі

[AttackDamagePointsAttribute (0)] / / Збиток, що наноситься противнику при атаці

[DefendDamagePointsAttribute (0)] / / Ефективність захисту

[MaximumSpeedPointsAttribute (18)] / / Максимальна швидкість

[CamouflagePointsAttribute (18)] / / Вміння ховатися

[EyesightPointsAttribute (50)] / / Далекозорість

/ / CLASS

public class MyAnimal: Animal

{Private PlantState targetPlant = null; / / Рослина

/ / Private AnimalState targetAnimal = null; / / Тварина

AnimalState attackerAnimal = null; / / Хто атакує

const int cruisingSpeed ​​= 5; / / Швидкість нормального ходу

const int fleeingSpeed ​​= 40; / / Швидкість при бігу

protected override void Initialize ()

{Idle + = new IdleEventHandler (IdleEvent);

/ / Load + = MyAnimal_Load;

Attacked + = new AttackedEventHandler (AttackedEvent);

MoveCompleted + = new Move Completed Event Handler (Move Completed Event);

}

/ / / / Завантаження організму

/ / Private void MyAnimal_Load (object sender, LoadEventArgs e)

/ / {

/ /}

void IdleEvent (object sender, IdleEventArgs e)

{Try

{MyWriteTrace ();

if (CanReproduce)

{WriteTrace ("Я розмножуюся ");

BeginReproduction (null);

}

/ / Якщо ми можемо їсти і маємо їжу, то ми їмо

if (CanEat)

{WriteTrace ("Я голодний. ");

if (! IsEating)

{WriteTrace ("Ні їжі: Шукаємо їжу?");

if (targetPlant! = null)

{WriteTrace ("Так, я бачу їжу.");

if (WithinEatingRange (targetPlant))

{WriteTrace ("Маємо їжу, старт поїдання.");

BeginEating (targetPlant);

if (IsMoving)

{WriteTrace ("Зупинимося, поки їмо. ");

StopMoving ();

}

}

else

{If (! IsMoving)

{WriteTrace ("Переміщаємося до їжі ");

BeginMoving (new MovementVector (targetPlant.Position, cruisingSpeed));

}

}

}

else

{WriteTrace ("Не можу знайти рослину.");

if ((! ScanForTargetPlant ())&&(! TraceScan ()))

if (! IsMoving)

{If (! TraceScan ())

{Int RandomX = OrganismRandom.Next (0, WorldWidth - 1);

int RandomY = OrganismRandom.Next (0, WorldHeight - 1);

BeginMoving (new MovementVector (new Point (RandomX, RandomY), cruisingSpeed));

}

}

else

{WriteTrace ("Переміщаємося і дивимося ...");

}

}

}

else

{

WriteTrace ("О! Їжа.");

if (IsMoving)

{WriteTrace ("Зупинимося поки їмо. ");

StopMoving ();

}

}

}

else

{WriteTrace ("Воот: нічого не робимо.");

if ((IsMoving )&&(! TraceScan ()))

StopMoving ();

TraceScan ();

}

}

catch (Exception exc)

{WriteTrace (exc.ToString ());

}

/ / If (! IsMoving)

/ / {

/ / Int32 RandomX = OrganismRandom.Next (0, WorldWidth - 1);

/ / Int32 RandomY = OrganismRandom.Next (0, WorldHeight - 1);

/ / BeginMoving (new MovementVector (new Point (RandomX, RandomY), 4));

/ /}

/ / Else

/ / {

/ /};

}

void MyWriteTrace ()

{WriteTrace ("Мій вік = ", State.TickAge," ходу. ");}

private bool ScanForTargetPlant ()

{Try

{ArrayList foundCreatures = Scan ();

/ / TraceScan ();

if (foundCreatures.Count> 0)

{/ / Завжди рухаємося біля самого близького рослини або ремов його

foreach (OrganismState organismState in foundCreatures)

{If (organismState is PlantState)

{TargetPlant = (PlantState) organismState;

BeginMoving (new MovementVector (organismState.Position, cruisingSpeed));

return true;

}

}

}

}

catch (Exception exc)

{WriteTrace (exc.ToString ());

}

return false;

}

/ / Викликається, коли істота було атаковане

void AttackedEvent (object sender, AttackedEventArgs e)

{

if (e.Attacker.IsAlive)

{Vector newVector = Vector.Subtract (attackerAnimal.Position, Position);

Vector newPositionVector = newVector.Scale (10);

Point newPosition = Vector.Add (Position, newPositionVector);

BeginMoving (new MovementVector (newPosition, fleeingSpeed));

}

}

/ / Запускається, коли закінчили рухатися.

private void MoveCompletedEvent (object sender, MoveCompletedEventArgs e)

{TraceScan ();

}

private bool TraceScan ()

{WriteTrace ("сканують ():");

ArrayList OrgArr = Scan ();

Int32 ii = 0;

Int32 Tick = State.TickAge;

for (Int32 I = 0; I <OrgArr.Count; I + +)

{OrganismState Org = OrgArr [I] as OrganismState;

String S;

if (Org is PlantState)

S = "Рослина";

else

{

if ((Org as AnimalState). AnimalSpecies.IsCarnivore)

S = "Хижак";

else

{WriteTrace ("Дивлюсь хто старше");

if (((Org as AnimalState). TickAge> Tick) & & (Org.Species.IsSameSpecies (this.Species)))

{Ii = I;

Tick ​​= (Org as AnimalState). TickAge;

}

S = "травоїдними";

}

}

WriteTrace (S);

}

if (Tick> State.TickAge)

{WriteTrace ("Бачу ватажка на основі досвіду. Іду слідом ");

OrganismState Org = OrgArr [ii] as OrganismState;

BeginMoving (new MovementVector ((Org as AnimalState). Position, cruisingSpeed));

return true;

}

else

{Return false;

}

}

public override void SerializeAnimal (MemoryStream m)

{

}

public override void DeserializeAnimal (MemoryStream m)

{

}

}

}

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Курсова
58кб. | скачати


Схожі роботи:
Розробка моделі аналізу і об`єктно орієнтованого компонента для гри Terrarium 2 0
Розробка об`єктно-орієнтованої моделі інформаційної системи навчальної бібліотеки
Уніфікована мова моделювання UML і сутність об`єктно-орієнтованого підходу
Програмування мовою С з використанням об єктно орієнтованого програмування
Розробка моделі для прогнозування надходжень податків на прибуток
Розробка математичної моделі, ПЗ для завдань складання розкладу
Вибір моделі і розробка конструкції одягу для певної групи споживачів
Розробка фінансової моделі продажу CD і DVD дисків для магазину CD навігатор
Реалізація моделі особистісного орієнтованого взаємодії педагога з дітьми
© Усі права захищені
написати до нас